<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Hash;
use DB;
class UserController extends Controller
{
    //后台用户添加页面
    public function getAdd(){
      //添加页面 返回视图添加页面
      return view('admin/user/add');
    }

    public function postInsert(Request $request){
        //接收form表单的值 并进行验证    
         $this -> validate($request,[
            'username' => 'required',
            'userpwd' => 'required',
            'reuserpwd' => 'required|same:userpwd',
            'email' => 'email| unique:shop_user,email',
            'tel' => 'required|unique:shop_user,tel|digits:11'
        ],[
            'username.required' => '用户名不存在',
            'userpwd.required' => '密码不存在',
            'reuserpwd.required' => '确认密码不存在',
            'reuserpwd.same' => '确认密码不一致',
            'email.email' => '邮箱格式不正确',
            'tel.required' => '电话不存在',
            'email.unique' => '邮箱已存在',
            'tel.unique' => '电话已存在',
            'tel.digits' => '电话号码要11位'
        ]);

         //用数组方式取出需要存入的值
         $arr = $request -> only(['username','nickname','userpwd','email','tel']);

         //对密码进行哈希加密
         $arr['userpwd'] = Hash::make($request -> input('userpwd'));

         //随机出一个50位数的token值
         $arr['token'] = str_random(50);

         //创建时间
         $arr['createTime'] = date('Y-m-d H:i:s',time());
         
         //插入数据
         $res = DB::table('shop_user') -> insert($arr);

         //进行判断 如果添加成功跳转至index页面 如果失败,利用事件回滚返回
         if($res){
            return redirect('admin/user/index ') -> with('success','添加成功');
         }else{
            return back() -> with('error','添加-失败');
         }
    }

        //查询所有的数据
        public function getIndex(Request $request){
            $count = $request -> input('count',10);
            $search = $request -> input('search','');
            //查询数据 并且分页
<<<<<<< HEAD
            $data = DB::table('shop_user') -> where('username','like','%'.$search.'%')-> paginate($count);

            //返回index页面
            return view('admin/user/index',['data' => $data,'request' => $request -> all()]);
=======
            $data = DB::table('shop_user') -> where('tel','like','%'.$search.'%')-> paginate($count);
            $page = $request -> input('page',1);
            $start = ($page - 1) * $count + 1;
            $sum = count(DB :: table('shop_user') ->where('tel','like','%'.$search.'%')->get()); 
            $end = min($page * $count,$sum);
            //返回index页面
            return view('admin/user/index',['data'=>$data,'request'=>$request -> all(), 'start' => $start, 'end' => $end, 'sum' => $sum]);
>>>>>>> 31e42f2d3415b82d4888522298db4e7de5f9c8aa
        }

          //获取删除数据的id号
         public function getDelete($id){

            //用户表中的id等于用户详情表中的uid
            $uid = $id;

            //利用接收来的id号,删除用户表中的数据
            $res = DB::table('shop_user') 
            -> where('id',$id) 
            -> delete();

            //删除用户详情表中的数据 关联删除
            $ress = DB::table('shop_userdetails')
            -> join('shop_user','shop_user.id','=','shop_userdetails.uid')
            ->where('uid',$uid)
            ->delete();

            //进行判断 如果添加成功跳转至index页面 如果失败,利用事件回滚返回
            if($res){
                return redirect('/admin/user/index') -> with('success','删除成功');
            }else{
                return back() -> with('error','删除失败');
            }
        }

          //接收用户表的id 进行修改
          public function getEdit($id){

              //通过用户的id号进行查询 并且返回用户所有信息
              $data = DB::table('shop_user') -> where('id',$id) -> first();
              return view('admin/user/edit',['data' => $data]);
          }

          //接收修改过来的数据 进行修改
          public function postUpdate(Request $request){
<<<<<<< HEAD
            
=======
              //dd($request -> all());
>>>>>>> 31e42f2d3415b82d4888522298db4e7de5f9c8aa
               //先进行判断 验证
              $this->validate($request,[
                  'username' => 'required',
                  'email' => 'email',
                  'scores' => 'required',
                  'tel' => 'required',
                  'level' => 'required',
                  'status' => 'required'
                ],[
                  'username.required' => '用户名不存在',
                  'email.email' => '邮箱格式不正确',
                  'scores.required' => '积分未选择',
                  'tel.required' => '电话未选择',
                  'level.required' => '等级未选择',
                  'status.required' => '状态未选择'
                ]);
            
            //修改验证合格的数据
            if($request -> hasFile('userpic')){

                //如果有文件上传 先随机再拼接上传文件的名称
                $temp_name = md5(time().rand(0,999999));
                $hz = $request -> file('userpic') -> getClientOriginalExtension();
                $userpic = $temp_name.'.'.$hz;

                //把接收的文件移动到头像上传的文件夹
                $request -> file('userpic') -> move('./uploads/images/userpic/',$userpic);

                //把需要的数据存入数组 去除不需要的数据
                $arr = $request -> except(['_token','id']);

                //把拼接好的上传文件名压入数组
                $arr['userpic'] = $userpic;

                //把数据添加到数据表中
                $res = DB::table('shop_user') -> where('id',$request->input('id')) -> update($arr);

                //判断 如果成功 如果添加成功跳转至index页面 如果失败,利用事件回滚返回
                if($res){
                    return redirect('/admin/user/index') -> with('success','修改成功');
                }else{
                    return back() -> with('error','修改失败');
                }
            }else{

                //没有文件上传区间 去除不需要的数据
                 $arr = $request -> except(['_token','id','userpic']);

                  //把修改好的数据存入用户表中
                 $res = DB::table('shop_user') -> where('id',$request->input('id')) -> update($arr);

                 //判断 如果成功 如果添加成功跳转至index页面 如果失败,利用事件回滚返回
                  if($res){
                      return redirect('/admin/user/index') -> with('success','修改成功');
                  }else{
                      return back() -> with('error','修改失败');
                  }
            }           
        }
}
